In many computing environments, information may be passed from one device to another typically more powerful device to perform certain computing tasks, such as processing, storage, or communication. Such information may include processes, data, functions, or any other information that consumes computing resources. Information may be sent in packet form or in some other type of data stream in various applications. For example, a virtual machine (VM) may be segmented into two segments: a shell VM and a core VM. Function calls to the shell VM may be passed to the core VM for processing. Segmented virtual machines are further described in U.S. patent application Ser. No. 10/378,061 entitled SEGMENTED VIRTUAL MACHINE, which is incorporated herein by reference for all purposes.
FIG. 1A is a block diagram illustrating a system including a segmented virtual machine 100. In this example, VM functionality is segmented into shell VM 108 and core VM 112. Shell VM 108 performs interactions with the external environment, such as with external application 104. A shell VM is sometimes referred to as a proxy. Core VM 112 performs VM internal execution functions. External interactions may be passed from external application 104 through shell VM 108 to core VM 112 for processing. For example, file or network I/O, operating system calls, and other native library interactions may be passed to core VM 112. In J2EE and Java server environments, many of these forwarded interactions may be TCP/IP connection packets (to/from web tier, DB tiers, clustering traffic, etc.). Forwarding these interactions through shell VM 108 results in overhead, which reduces the efficiency of the segmented VM. It would be desirable to reduce the overhead associated with forwarding certain types of interactions through the shell VM.